/*
 * @Author: Qimu
 * @Date: 2020-04-20 13:38:40
 * @LastEditors: Qimu
 * @LastEditTime: 2020-07-08 03:01:39
 * @Description: file content
 * @FilePath: \vue-admin-koa2\koa2_api\controllers\user.js
 */
const User = require('../module/schama/user');
const tools = require('../module/utlis/tools');
const query = require('../module/utlis/query');
const config = require('../module/config/config');

//用户业务
class UserController {
  //用户头像上传
  // static async uploadAvatar(ctx) {
  //   ctx.body = {
  //     'data': {
  //       filename: `${config.app.host}:${config.app.port}/admin/avatars/${ctx.req.file.filename}`//返回头像文件名
  //     },
  //     'meta': {
  //       'status': 200,
  //       'message': `恭喜上传头像成功!`
  //     }
  //   }
  // }

  //用户新增(POST)
  static async setUser(ctx) {
    let queryUserResult;
    const { user_name, user_email, user_mobile, user_type, user_status } = ctx.request.body;
    const data = { user_name, user_email, user_mobile, user_mobile, user_type, user_status, user_registerTime: tools.GMTtoStr(new Date()) }//用户注册数据
    queryUserResult = await query.find(User, { user_email });//查找数据结果
    if (queryUserResult.length > 0) {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 500,
          'message': `${user_email}邮箱已经存在!`
        }
      }
    } else {
      await query.save(User, data)//保存用户注册新增数据
      ctx.body = {
        'data': {},
        'meta': {
          'status': 200,
          'message': `恭喜${user_email}邮箱注册成功!`
        }
      }
    }
  }

  //用户登录(创建token)(POST)
  // static async adminLogin(ctx) {
  //   const { admin_name, admin_password } = ctx.request.body;
  //   let queryLoginResult = await query.find(Admin, { admin_name });
  //   if (queryLoginResult.length === 0) {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 500,
  //         'message': '该用户/邮箱不存在!'
  //       }
  //     };
  //   } else {
  //     //查到后验证密码,jwt生成token
  //     let payload = {
  //       id: queryLoginResult[0]._id,
  //       admin_name: queryLoginResult[0].admin_name,
  //       admin_avatar: queryLoginResult[0].admin_avatar,
  //     }
  //     await query.updateOne(Admin, { _id: queryLoginResult[0]._id }, { last_loginTime: tools.GMTtoStr(new Date()) });//修改数据库登录时间
  //     const token = await tools.signToken(payload, config.accessJwt.secret, config.accessJwt.expiresIn);//生成access-token
  //     if (queryLoginResult[0].admin_password === tools.md5(admin_password) && queryLoginResult[0].admin_status === 1) {
  //       ctx.body = {
  //         'data': {
  //           'token': token,
  //           'userInfo': {
  //             admin_avatar: queryLoginResult[0].admin_avatar,
  //             admin_email: queryLoginResult[0].admin_email,
  //             admin_name: queryLoginResult[0].admin_name
  //           }
  //         },
  //         meta: {
  //           'status': 200,
  //           'message': `${admin_name}登录成功!`
  //         }
  //       }
  //     } else if (queryLoginResult[0].admin_password === tools.md5(admin_password) && queryLoginResult[0].admin_status === 0) {
  //       ctx.body = {
  //         'meta': {
  //           'status': 500,
  //           'message': `${admin_name}账号已被禁用,请联系用户!`
  //         }
  //       };
  //     } else {
  //       ctx.body = {
  //         'meta': {
  //           'status': 500,
  //           'message': '登录密码错误!'
  //         }
  //       }
  //     }
  //   }
  // }

  //获取用户数据列表(GET)
  static async listUser(ctx) {
    let queryUserResult = await query.find(User);//查找角色数据结果
    if (queryUserResult.length > 0) {
      ctx.body = {
        'data': queryUserResult,
        'meta': {
          'status': 200,
          'message': '用户获取成功!'
        }
      }
    } else {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 500,
          'message': '用户获取失败!'
        }
      }
    }
  }

  //修改用户状态
  // static async updateAdmin(ctx) {
  //   const { _id, admin_name, admin_status } = ctx.request.body;
  //   let updateAdminResult
  //   updateAdminResult = await query.updateOne(Admin, { _id }, { admin_status });
  //   //更新用户数据结果
  //   if (updateAdminResult.ok === 1) {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 200,
  //         'message': `${admin_name}-用户状态编辑成功!`
  //       }
  //     }
  //   } else {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 500,
  //         'message': `${admin_name}-用户状态编辑失败!`
  //       }
  //     }
  //   }
  // }

  //提交编辑用户
  // static async putEditAdmin(ctx) {
  //   let updateAdminResult //编辑用户后变量保存
  //   const { _id, admin_name, admin_email, admin_tel, admin_role } = ctx.request.body;
  //   updateAdminResult = await query.updateOne(Admin, { _id }, { admin_name, admin_email, admin_tel, admin_role });//更新用户数据结果
  //   if (updateAdminResult.ok === 1) {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 200,
  //         'message': `${admin_name}-用户编辑成功!`
  //       }
  //     }
  //   } else {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 500,
  //         'message': `${admin_name}-用户编辑失败!`
  //       }
  //     }
  //   }
  // }

  //删除用户
  // static async deleteAdmin(ctx) {
  //   let deleteAdminResult
  //   deleteAdminResult = await query.findByIdAndDelete(Admin, { _id: ctx.params.id });//删除用户数据结果
  //   if (deleteAdminResult) {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 200,
  //         'message': `${deleteAdminResult.admin_name}-角色删除成功!`
  //       }
  //     }
  //   } else {
  //     ctx.body = {
  //       'data': {},
  //       'meta': {
  //         'status': 500,
  //         'message': `${deleteAdminResult.admin_name}-角色删除失败!`
  //       }
  //     }
  //   }
  // }

  //用户退出(由前台控制即可)
  // static async logout(ctx) {
  //   // ctx.success({
  //   //   msg: '退出成功!',
  //   //   success: true
  //   // });
  //   ctx.body = {
  //     'code': 1,
  //     'message': '退出成功!'
  //   }
  // }
}

exports = module.exports = UserController;